<!--
Copyright (c) 2019-2026, Hossein Moein
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
  notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
  notice, this list of conditions and the following disclaimer in the
  documentation and/or other materials provided with the distribution.
* Neither the name of Hossein Moein and/or the DataFrame nor the
  names of its contributors may be used to endorse or promote products
  derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL Hossein Moein BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-->
<!DOCTYPE html>
<html>

<head>
<style>
body {
  background-image: linear-gradient(Azure, AliceBlue, GhostWhite, WhiteSmoke);
}
</style>
</head>

<body style="font-family: Georgia, serif">
  <table border="1">

    <tr bgcolor="lightblue">
      <th>DataFrame Instance<BR>Public Types</th> <th>Description</th>
    </tr>

    <tr bgcolor="Azure">
      <td bgcolor="blue"> <font color="white">
        <PRE><B>
View
        </font>
        </B></PRE>
      </td>
      <td>
        A DataFrame view. This is a view on a <I>contiguous</I> slice of another DataFrame of the same type.<BR>
        You can read and change data in this view.<BR>
      </td>
    </tr>

    <tr bgcolor="Azure">
      <td bgcolor="blue"> <font color="white">
        <PRE><B>
ConstView
        </font>
        </B></PRE>
      </td>
      <td>
        A <I>const</I> DataFrame view. This is a view on a <I>contiguous</I> slice of another DataFrame of the same type.<BR>
        This is a read-only view.<BR>
      </td>
    </tr>

    <tr bgcolor="Azure">
      <td bgcolor="blue"> <font color="white">
        <PRE><B>
PtrView
        </font>
        </B></PRE>
      </td>
      <td>
        A DataFrame view. This is a view on a <I>disjoined</I> slice of another DataFrame of the same type.<BR>
        You can read and change data in this view.<BR>
      </td>
    </tr>

    <tr bgcolor="Azure">
      <td bgcolor="blue"> <font color="white">
        <PRE><B>
ConstPtrView
        </font>
        </B></PRE>
      </td>
      <td>
        A <I>const</I> DataFrame view. This is a view on a <I>disjoined</I> slice of another DataFrame of the same type.<BR>
        This is a read-only view.<BR>
      </td>
    </tr>

    <tr bgcolor="Azure">
      <td bgcolor="blue"> <font color="white">
        <PRE><B>
align_value
        </font>
        </B></PRE>
      </td>
      <td>
        An integer value specifying the byte alignment boundary in memory allocation for the DataFrame type.<BR>
      </td>
    </tr>

    <tr bgcolor="Azure">
      <td bgcolor="blue"> <font color="white">
        <PRE><B>
template&lt;typename T&gt;
AllocatorType
        </font>
        </B></PRE>
      </td>
      <td>
        Type of allocator used to allocate memory for this type of DataFrame.<BR>
        It is either std::allocator or a custom allocator to allocate memory on custom byte boundaries. <BR>
      </td>
    </tr>

    <tr bgcolor="Azure">
      <td bgcolor="blue"> <font color="white">
        <PRE><B>
size_type
        </font>
        </B></PRE>
      </td>
      <td>
        std::size_t<BR>
      </td>
    </tr>

    <tr bgcolor="Azure">
      <td bgcolor="blue"> <font color="white">
        <PRE><B>
IndexType
        </font>
        </B></PRE>
      </td>
      <td>
        Index column type for this DataFrame<BR>
      </td>
    </tr>

    <tr bgcolor="Azure">
      <td bgcolor="blue"> <font color="white">
        <PRE><B>
IndexVecType
        </font>
        </B></PRE>
      </td>
      <td>
        Type of vector used for the index column. It is either a std::vector or one of the vector views depending on whether this is a DataFrame or a DataFrame <I>view</I>.<BR>
        Also, the allocator depends on the <I>align_value</I>.<BR>
      </td>
    </tr>

    <tr bgcolor="Azure">
      <td bgcolor="blue"> <font color="white">
        <PRE><B>
template&lt;typename T&gt;
ColumnVecType
        </font>
        </B></PRE>
      </td>
      <td>
        Type of vector used for data columns. It is either a std::vector or one of the vector views depending on whether this is a DataFrame or a DataFrame <I>view</I>.<BR>
        Also, the allocator depends on the <I>align_value</I>.<BR>
      </td>
    </tr>

    <tr bgcolor="Azure">
      <td bgcolor="blue"> <font color="white">
        <PRE><B>
template&lt;typename T&gt;
StlVecType
        </font>
        </B></PRE>
      </td>
      <td>
        An stl::vector type with an allocator that is compatible with this DataFrame type.<BR>
      </td>
    </tr>

    <tr bgcolor="lightblue">
      <th>Library-wide<BR>Types</th> <th>Description</th>
    </tr>

    <tr bgcolor="Azure">
      <td bgcolor="blue"> <font color="white">
        <PRE><B>
template&lt;typename I&gt;
StdDataFrame
        </font>
        </B></PRE>
      </td>
      <td>
        A DataFrame with index type <I>I</I> that uses system default byte boundary for memory allocations.<BR>
      </td>
    </tr>

    <tr bgcolor="Azure">
      <td bgcolor="blue"> <font color="white">
        <PRE><B>
template&lt;typename I&gt;
StdDataFrame64
        </font>
        </B></PRE>
      </td>
      <td>
        A DataFrame with index type <I>I</I> that uses 64 bytes boundary for memory allocations.<BR>
      </td>
    </tr>

    <tr bgcolor="Azure">
      <td bgcolor="blue"> <font color="white">
        <PRE><B>
template&lt;typename I&gt;
StdDataFrame128
        </font>
        </B></PRE>
      </td>
      <td>
        A DataFrame with index type <I>I</I> that uses 128 bytes boundary for memory allocations.<BR>
      </td>
    </tr>

    <tr bgcolor="Azure">
      <td bgcolor="blue"> <font color="white">
        <PRE><B>
template&lt;typename I&gt;
StdDataFrame256
        </font>
        </B></PRE>
      </td>
      <td>
        A DataFrame with index type <I>I</I> that uses 256 bytes boundary for memory allocations.<BR>
      </td>
    </tr>

    <tr bgcolor="Azure">
      <td bgcolor="blue"> <font color="white">
        <PRE><B>
template&lt;typename I&gt;
StdDataFrame512
        </font>
        </B></PRE>
      </td>
      <td>
        A DataFrame with index type <I>I</I> that uses 512 bytes boundary for memory allocations.<BR>
      </td>
    </tr>

    <tr bgcolor="Azure">
      <td bgcolor="blue"> <font color="white">
        <PRE><B>
template&lt;typename I&gt;
StdDataFrame1024
        </font>
        </B></PRE>
      </td>
      <td>
        A DataFrame with index type <I>I</I> that uses 1024 bytes boundary for memory allocations.<BR>
      </td>
    </tr>

    <tr bgcolor="Azure">
      <td bgcolor="blue"> <font color="white">
        <PRE><B>
template&lt;typename T&gt;
struct Index2D  {
    T   begin {};
    T   end {};
};
        </font>
        </B></PRE>
      </td>
      <td>
        It represents a range with begin and end within a continuous memory space<BR>
      </td>
    </tr>

    <tr bgcolor="Azure">
      <td bgcolor="blue"> <font color="white">
        <PRE><B>
DF_INDEX_COL_NAME
        </font>
        </B></PRE>
      </td>
      <td>
        A <I>const char *</I> name referring to the index column in general.<BR>
      </td>
    </tr>

  </table>

  <BR><img src="https://github.com/hosseinmoein/DataFrame/blob/master/docs/LionLookingUp.jpg?raw=true" alt="C++ DataFrame"
       width="200" height="200" style="float:right"/>

</body>
</html>

<!--
Local Variables:
mode:HTML
tab-width:4
c-basic-offset:4
End:
-->
